Linux 系统性能分析工具集

Linux 系统中提供众多的性能分析工具,常见的工具如下表:

软件包名 简介
latencytop 是一个监测工具,用于报告系统和应用程序中与等待时间相关的统计信息。
memstat 分析了应用层内存使用的情况,并从匿名页和文件页两个角度给出了详尽的数据。
vmtouch 是一个控制文件系统page cache的小工具,可以将文件纳入page cache中,也可以驱逐出去。
fio 是一个测试IO性能的工具,从各个方面测试了IO的性能数据。
blktrace 是一个用于跟踪Block Layer函数调用以及耗费时间的工具。
iostat 是一个查看当前各block设备IO状态的工具。
iozone 可以对block设备上的文件系统进行测试。
lmbench 是一个全面测试系统性能的工具。
nmon 是一个综合性的系统性能观测工具。
iperf3 是一个用于测量网络性能的工具。
pv 是一个 用于显示命令在执行时的进度条的工具。
dieharder 是一个用于测试随机数生成能力的工具。

上述工具都可以通过apt install的方式安装,详情请见 包管理

如果apt install安装失败,可以尝试apt update后,再apt install

latencytop

LatencyTOP 是一个监测工具,用于报告系统和应用程序中与等待时间相关的统计信息。此工具报告系统中以及系统上正在运行的应用程序中等待时间的发生位置和类型的相关统计信息。可以根据该统计信息来消除所查明的等待时间,从而提高应用程序和系统的性能吞吐量。

此工具定期分析系统活动,并在输出窗口中显示数据。将跟踪两种类型的等待时间:进入休眠状态和从休眠状态唤醒的 LWP,以及调整顺序以获取同步对象的 LWP。此工具使用 Solaris DTrace 框架收集与系统和应用程序 LWP 的这两种非活动情况相对应的统计信息。

输出窗口分成两部分。上部分显示系统范围的统计信息,而下部分显示有关各个进程的统计信息。用户可使用向左方向键和向右方向键在进程列表中导航,并选择感兴趣的列表。然后此工具会在窗口下部分中显示该选定进程的相关统计信息。如果按下 t 或 T 键,此工具将显示该选定进程的特定于 LWP 的视图。可使用 t 或 T 键在进程视图和线程视图之间进行切换。

执行期间,用户可通过按下 r 或 R 键强制刷新分析结果。间隔时间将恢复为缺省值或指定值(如果使用 -t)。要退出应用程序,用户必须按下 q 或 Q 键。

内核需要开启 CONFIG_LATENCYTOP

apt install -y latencytop

latencytop 可以观察一定时间内,每一个进程在运行过程中发生的调度的次数和原因分布

   LatencyTOP version 0.5       (C) 2008 Intel Corporation                      

Cause                                                Maximum     Percentage
Waiting for a process to die                        3.8 msec         29.4 %
Waiting for event (select)                          3.7 msec         53.6 %
Waiting for TTY to finish sending                   1.3 msec         16.0 %
[__schedule]                                        0.2 msec          0.5 %

Process latencytop (1007)                  Total:   9.1 msec                    
Waiting for a process to die                        3.8 msec         42.3 %
Waiting for TTY to finish sending                   1.3 msec         55.7 %
[__schedule]                                        0.2 msec          1.9 %

 kworker/1:1-mm_percpu_wq  kworker/0:1H-mmc_complete  haveged  ntpd  latencytop

上面一部分是内核态的,下面一部分对应的是每一个进程

image-20201230135107238

高亮的latencytop表示latencytop这个程序自身在运行过程中发生的进程切换次数和原因分布

memstat

memstat是一个用于观测系统内存使用状况的工具

安装

apt install -y memstat

memstat通过遍历/proc下所有进程,然后解析内存使用情况。通过对比可以发现,memstat不会统计内核线程的内存使用情况,同时memstat也不会统计所有设备使用的内存。memstat 详尽地分析了应用层内存使用的情况,并从匿名页和文件页两个角度给出了详尽的数据。memstat使用:

memstat - 显示整个系统内存使用情况。
memstat -p pid - 显示进程pid的内存使用情况。

显示示例如下:

# memstat
    288k: PID     1 (/bin/busybox)
    288k: PID    69 (/bin/busybox)
    288k: PID    73 (/bin/busybox)
   1752k: PID    78 (/bin/busybox)
   5988k: PID    94 (/usr/sbin/haveged)
  66536k: PID   106 (/usr/sbin/ntpd)
    572k: PID   111 (/usr/sbin/sshd)
    288k: PID   116 (/bin/busybox)
    672k: PID   117 (/bin/bash)
    300k: PID   894 (/usr/bin/memstat)
    536k(    516k): /bin/bash 117
   1284k(   1224k): /bin/busybox 1 69 73 78 116 1 69 73 78 116
    144k(     92k): /lib/ld-2.29.so 78 94 106 111 117 894 78 94 106 111 117 ...
     40k(     16k): /lib/libatomic.so.1.2.0 106 111 106 111 106 111
   1196k(   1028k): /lib/libc-2.29.so 78 94 106 111 117 894 78 94 106 111 11...
     36k(     24k): /lib/libcrypt-2.29.so 111
     32k(      8k): /lib/libdl-2.29.so 106 111 117 106 111 117 106 111 117
     76k(     68k): /lib/libgcc_s.so.1 106
    528k(    520k): /lib/libm-2.29.so 106
     24k(     16k): /lib/libnss_dns-2.29.so 106
     64k(     32k): /lib/libnss_files-2.29.so 78 106 111 117 78 106 111 117 ...
     96k(     80k): /lib/libpthread-2.29.so 106 111 106 111 106 111
     76k(     52k): /lib/libresolv-2.29.so 106 111 106 111 106 111
     16k(      8k): /lib/libutil-2.29.so 111
     16k(      8k): /usr/bin/memstat 894
   1868k(   1516k): /usr/lib/libcrypto.so.1.1 106 111 106 111 106 111
     92k(     84k): /usr/lib/libhavege.so.1.1.0 94
     32k(     24k): /usr/lib/libhistory.so.8.0 117
    264k(    240k): /usr/lib/libncursesw.so.6.1 117
    236k(    200k): /usr/lib/libreadline.so.8.0 117
    456k(    344k): /usr/lib/libssl.so.1.1 106 111 106 111 106 111
     68k(     60k): /usr/lib/libz.so.1.2.11 111
     24k(     16k): /usr/sbin/haveged 94
    572k(    536k): /usr/sbin/ntpd 106
    520k(    504k): /usr/sbin/sshd 111

vmtouch

vmtouch 是一个可以操纵page cache的工具,它可以查看一个文件占用了多少 page cache,可以让一个文件完全浸泡在 page cache 里,也可以让一个文件完全从 page cache 中剥离出来

安装

apt install -y vmtouch
# vmtouch uImage 
           Files: 1
     Directories: 0
  Resident Pages: 0/3433  0/13M  0%
         Elapsed: 0.000499 seconds

# free -m
              total        used        free      shared  buff/cache   available
Mem:           3448          67        3371           0           9        3368
Swap:             0           0           0

uImage 文件存放在 eMMC 上,通过 vmtouch 工具可见,uImage 大小为3433个pages,约13M,此时并没有占用 page cache

同时可以看到,此时的 free 内存为3371M

然后使用 vmtouch 将 uImage 完全纳入 page cache

# vmtouch -t uImage 
           Files: 1
     Directories: 0
   Touched Pages: 3433 (13M)
         Elapsed: 0.61707 seconds
# free -m
              total        used        free      shared  buff/cache   available
Mem:           3448          67        3358           0          22        3363
Swap:             0           0           0
# vmtouch uImage 
           Files: 1
     Directories: 0
  Resident Pages: 3433/3433  13M/13M  100%
         Elapsed: 0.001754 seconds

可以看到,uImage 已经完全浸泡在 page cache 中了,并且 free 内存也恰好少了13M

使用

# vmtouch -e uImage 
           Files: 1
     Directories: 0
   Evicted Pages: 3433 (13M)
         Elapsed: 0.004634 seconds
# vmtouch uImage 
           Files: 1
     Directories: 0
  Resident Pages: 0/3433  0/13M  0%
         Elapsed: 0.000446 seconds

可以将 uImage 从 page cache 中打捞出来

fio

fio是一个用于测量文件系统挂载有文件系统的block设备的性能的工具

安装

apt install -y fio
fio -filename=/dev/emcpowerb \
-iodepth 16 -thread -rw=randread \
-ioengine=psync -bs=4k -size=1G \
-numjobs=1 -runtime=180 \
-group_reporting -name=test1

输出:

test1: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=16
fio-3.9
Starting 1 thread
Jobs: 1 (f=1): [r(1)][100.0%][r=330MiB/s][r=84.4k IOPS][eta 00m:00s]
test1: (groupid=0, jobs=1): err= 0: pid=167: Thu Jan  1 10:31:36 1970
   read: IOPS=84.9k, BW=332MiB/s (348MB/s)(1024MiB/3087msec)
    clat (usec): min=4, max=329, avg= 6.61, stdev= 3.91
     lat (usec): min=5, max=330, avg= 7.58, stdev= 4.26
    clat percentiles (usec):
     |  1.00th=[    6],  5.00th=[    6], 10.00th=[    6], 20.00th=[    7],
     | 30.00th=[    7], 40.00th=[    7], 50.00th=[    7], 60.00th=[    7],
     | 70.00th=[    7], 80.00th=[    7], 90.00th=[    8], 95.00th=[    8],
     | 99.00th=[    8], 99.50th=[    9], 99.90th=[   70], 99.95th=[  122],
     | 99.99th=[  151]
   bw (  KiB/s): min=334910, max=340294, per=99.46%, avg=337844.33, stdev=2086.47, samples=6
   iops        : min=83727, max=85073, avg=84460.50, stdev=521.51, samples=6
  lat (usec)   : 10=99.57%, 20=0.25%, 50=0.02%, 100=0.10%, 250=0.06%
  lat (usec)   : 500=0.01%
  cpu          : usr=29.16%, sys=69.51%, ctx=772, majf=0, minf=1
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=262144,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=16

Run status group 0 (all jobs):
   READ: bw=332MiB/s (348MB/s), 332MiB/s-332MiB/s (348MB/s-348MB/s), io=1024MiB (1074MB), run=3087-3087msec

可以看到,平均带宽是 332MB/s,平均延迟在 10us,更多参数的设置和解读参见:https://tobert.github.io/post/2014-04-17-fio-output-explained.html

blktrace

内核需要开启CONFIG_BLK_DEV_IO_TRACE

blktrace是一个用于观测和跟踪系统IO状况的工具

安装

apt install -y blktrace
# dd if=/dev/mmcblk0p3 of=/dev/zero bs=512K count=1024000 &
# blktrace /dev/mmcblk0p3 -o - | blkparse -i -
179,3    0        1     0.000000000     9  C  RA 1164800 + 1536 [0]
179,0    0        2     0.000552333   136  A  RA 1166336 + 512 <- (179,3) 1039360
179,3    0        3     0.000554333   136  Q  RA 1166336 + 512 [dd]
179,3    0        4     0.000570000   136  G  RA 1166336 + 512 [dd]
179,3    0        5     0.000574000   136  P   N [dd]
179,3    0        6     0.000578000   136  U   N [dd] 1
179,3    0        7     0.000581333   136  I  RA 1166336 + 512 [dd]
179,3    0        8     0.000627000    45  D  RA 1166336 + 512 [kworker/0:2H]
179,0    0        9     0.001208000   136  A  RA 1166848 + 1024 <- (179,3) 1039872
179,3    0       10     0.001209000   136  Q  RA 1166848 + 1024 [dd]
179,3    0       11     0.001217333   136  G  RA 1166848 + 1024 [dd]
179,3    0       12     0.001220333   136  P   N [dd]
... ...
179,3    0      103     0.171033333    45  D  RA 1174528 + 512 [kworker/0:2H]
CPU0 (179,3):
 Reads Queued:          13,     4352KiB  Writes Queued:           0,        0KiB
 Read Dispatches:       13,     4352KiB  Write Dispatches:        0,        0KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:       12,     4608KiB  Writes Completed:        0,        0KiB
 Read Merges:            0,        0KiB  Write Merges:            0,        0KiB
 Read depth:             2               Write depth:             0
 IO unplugs:            13               Timer unplugs:           0

Throughput (R/W): 26947KiB/s / 0KiB/s
Events (179,3): 103 entries
Skips: 0 forward (0 -   0.0%)

其中第六个字段非常有用:每一个字母都代表了 IO 请求所经历的某个阶段

  • Q – 即将生成 IO 请求
  • G – IO 请求生成
  • I – IO 请求进入 IO Scheduler 队列
  • D – IO 请求进入 driver
  • C – IO 请求执行完毕

而第四个字段表示从走到这一个阶段的时间戳,通过这一信息,可以详尽地分析一个 IO 完整的流程,并分析出瓶颈在哪里

最后,还可以通过 btt 来绘制流程图,这里就不表了

iostat

内核需要开启 CONFIG_TASK_IO_ACCOUNTING

iostat是一个用于观测当前系统IO速度和负载的工具

安装

apt install -y iostat
# iostat -h
iostat v2.2, (C) 1999-2005 by Greg Franks, Zlatko Calusic, Rick Lindsley, Arnaud Desitter
Distributed under the terms of the GPL (see LICENSE file)
Usage: iostat [-cdDpPxh] [disks...] [interval [count]]
options:

        c - print cpu usage info
        d - print basic disk info
        D - print disk utilization info
        p - print partition info also
        P - print partition info only
        x - print extended disk info
        h - this help
# iostat -cdDP
  mmcblk0       mmcblk0p3             cpu
 r/s  w/s   %b   r/s  w/s   %b   us  sy  wt  id
   5    0    2     5    0    2    0   0   7  92

iozone

iozone是一个测量block设备上文件系统性能的测试工具

安装

apt install -y iozone

iozone -a 可以给 ICE 上基于 eMMC 的文件系统进行一个全面测试

image-20201228220720876

iozone 本身可以生成 excel,结合 gnuplot 之类的画图工具还可以生成更复杂的剖面图

image-20201228220325228

lmbench

lmbench 是一个综合性的性能测量工具集合

安装

apt install -y lmbench

下面介绍一些典型的功能

bw_mem

bw_mem用于测量内存带宽

root@thead-910:~# bw_mem 1M rd
1.00 9565.06

表示测试 1MB数据量的读,速度为 9565MB/s

root@thead-910:~# bw_mem 10M cp
10.00 1218.92

表示测试 10MB数据量的拷贝,速度为 1218MB/s

lat_mem_rd

lat_mem_rd用于测量读内存的延迟

root@thead-910:~# lat_mem_rd 1M
"stride=64
0.00049 2.501
0.00098 2.501
0.00195 2.501
0.00293 2.501
0.00391 2.501
0.00586 2.501
0.00781 2.502
0.01172 2.503
0.01562 2.502
0.02344 2.503
0.03125 2.504
0.04688 3.790
0.06250 6.100
0.09375 6.198
0.12500 6.650
0.18750 6.741
0.25000 6.730
0.37500 6.710
0.50000 6.701
0.75000 6.695
1.00000 6.690

左边一列是读到的数据量(MB),右边一列是读的延时(ns)

mhz

mhz用于测量当前CPU的频率

root@thead-910:~# mhz
1199 MHz, 0.8340 nanosec clock

表示 cpu 运行的频率是 1.2GHz

当然,lmbench 还有很多测试用例,所以可以使用一个来自 ltp 的 lmbench 测试集 lmbench_test.sh(默认在apt install的时候安装),该测试集涵盖了 lmbench 所有的测试用例,跑一遍下来,所有性能参数一目了然,如下:

root@thead-910:~# lmbench_test.sh 
|TRACE LOG| ***** STARTING LMBENCH SCRIPT ***** |
|TRACE LOG| CREATING THE FILE OF 16MB SIZE FOR BENCHMARKING|
dd: error writing 'test1.txt': No space left on device
9+0 records in
8+0 records out
|TRACE LOG| ***** STARTING BANDWIDTH BENCHMARKS ***** |
|TRACE LOG| MEMORY BANDWIDTH BENCHMARKS |
|TEST START|bw_mem|
|TRACE LOG| Parameters      : |
|TRACE LOG| Operation       - rd|
|TRACE LOG| Memory Blk Size - 1M|
1.00 9563.10
|TEST RESULT|PASS|bw_mem|
|TEST END|bw_mem|
|TEST START|bw_mem|
|TRACE LOG| Parameters      : |
|TRACE LOG| Operation       - rd|
|TRACE LOG| Memory Blk Size - 2M|
2.00 9172.56
|TEST RESULT|PASS|bw_mem|
|TEST END|bw_mem|
|TEST START|bw_mem|
|TRACE LOG| Parameters      : |
|TRACE LOG| Operation       - rd|
|TRACE LOG| Memory Blk Size - 4M|
... ...
AF_UNIX sock stream bandwidth: 1903.41 MB/sec
|TEST RESULT|PASS|bw_unix|
|TEST END|bw_unix|
|TRACE LOG| BANDWIDTH OF FILE READ|
|TEST START|bw_file_rd|
|TRACE LOG| Parameters      : |
|TRACE LOG| Size            - 1MB|
|TRACE LOG| operation       - open2close|
|TRACE LOG| File            - test1.txt|
1.00 1658.93
|TEST RESULT|PASS|bw_file_rd|
|TEST END|bw_file_rd|
|TEST START|bw_file_rd|
|TRACE LOG| Parameters      : |
|TRACE LOG| Size            - 1MB|
|TRACE LOG| operation       - io_only|
|TRACE LOG| File            - test1.txt|
1.00 1652.89
... ...
"size=128k ovr=26.95
4 7.87
|TEST RESULT|PASS|lat_ctx|
|TEST END|lat_ctx|
|TEST START|lat_ctx|
|TRACE LOG| Parameters      : |
|TRACE LOG| procs           - 4|
|TRACE LOG| size_in_kbytes  - 256K|
|TRACE LOG| repetitions     - 100|
... ...

nmon

nmon 是一个综合性的性能观测工具

安装

apt install -y nmon

输入 nmon 会进入这个画面

+nmon-16g---------------------Hostname=buildroot----Refresh= 0secs ---09:01.14-+
|                                                                              |
|   ------------------------------                                             |
|    _ __  _ __ ___   ___  _ __          For help type H or ...                |
|   | '_ \| '_ ` _ \ / _ \| '_ \          nmon -?  - hint                      |
|   | | | | | | | | | (_) | | | |         nmon -h  - full details              |
|   |_| |_|_| |_| |_|\___/|_| |_|                                              |
|                                        To stop nmon type q to Quit           |
|   ------------------------------                                             |
|                                                                              |
|                                                                              |
|   Use these keys to toggle statistics on/off:                                |
|     c = CPU         l = CPU Long-term     - = Faster screen updates          |
|     C = " WideView  U = Utilisation       + = Slower screen updates          |
|     m = Memory      V = Virtual memory    j = File Systems                   |
|     d = Disks       n = Network           . = only busy disks/procs          |
|     r = Resource    N = NFS               h = more options                   |
|     k = Kernel      t = Top-processes     q = Quit                           |
+------------------------------------------------------------------------------+

再次输入“cUd”可以观测 cpu 使用率,io 使用率等性能参数

+nmon-16g------[H for help]---Hostname=buildroot----Refresh= 2secs ---09:03.30-+
| CPU Utilisation -------------------------------------------------------------|
|---------------------------+-------------------------------------------------+|
|CPU User%  Sys% Wait%  Idle|0          |25         |50          |75       100||
|  1  21.9   2.0   0.0  76.1|UUUUUUUUUU    >                                  ||
|  2   0.5   3.0   0.0  96.5|s         >                                      ||
|---------------------------+-------------------------------------------------+|
|Avg  11.0   2.2   0.0  86.8|UUUUUs >                                         ||
|---------------------------+-------------------------------------------------+|
| CPU Utilisation Stats -------------------------------------------------------|
|ALL    21.9    0.0    4.5  173.3    0.0    0.0    0.0    0.0    0.0    0.0    |
|CPU   User%  Nice%   Sys%  Idle%  Wait% HWirq% SWirq% Steal% Guest% GuestNice%|
|  1    21.9    0.0    2.0   76.2    0.0    0.0    0.0    0.0    0.0    0.0    |
|  2     0.5    0.0    3.0   96.6    0.0    0.0    0.0    0.0    0.0    0.0    |
| Disk I/O --/proc/diskstats----mostly in KB/s-----Warning:contains duplicates-|
|DiskName Busy  Read WriteKB|0          |25         |50          |75       100||
|mmcblk0    0%    0.0    0.0|>                                                ||
|mcblk0p3   0%    0.0    0.0|>                                                ||
|Totals Read-MB/s=0.0      Writes-MB/s=0.0      Transfers/sec=0.0              |
|------------------------------------------------------------------------------|
+------------------------------------------------------------------------------+

iperf3

iperf 用于测量网络性能

安装

apt install -y iperf3

在主机端启动一个 iperf3 server

Microsoft Windows [版本 10.0.18363.1256]
(c) 2019 Microsoft Corporation。保留所有权利。

D:\公司\工具\iperf-3.1.3-win64>iperf3.exe -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.111.111.11, port 58022
[  5] local 192.111.111.123 port 5201 connected to 192.111.111.11 port 58024
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  11.3 MBytes  94.8 Mbits/sec
[  5]   1.00-2.00   sec  11.1 MBytes  92.9 Mbits/sec
[  5]   2.00-3.00   sec  11.3 MBytes  94.4 Mbits/sec
[  5]   3.00-4.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   4.00-5.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   5.00-6.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   6.00-7.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   7.00-8.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   8.00-9.00   sec  11.3 MBytes  94.9 Mbits/sec
[  5]   9.00-10.00  sec  11.3 MBytes  94.9 Mbits/sec

在板端启动一个 iperf3 测试程序

# iperf3 -c 192.111.111.123      
Connecting to host 192.111.111.123, port 5201
[  5] local 192.111.111.11 port 58024 connected to 192.111.111.123 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  11.6 MBytes  96.8 Mbits/sec    0   92.7 KBytes       
[  5]   1.00-2.00   sec  11.0 MBytes  92.5 Mbits/sec    0   92.7 KBytes       
[  5]   2.00-3.00   sec  11.3 MBytes  94.6 Mbits/sec   54   94.1 KBytes       
[  5]   3.00-4.00   sec  11.4 MBytes  95.6 Mbits/sec    0   98.4 KBytes       
[  5]   4.00-5.00   sec  11.3 MBytes  94.6 Mbits/sec    0    115 KBytes       
[  5]   5.00-6.00   sec  11.3 MBytes  95.1 Mbits/sec    0    115 KBytes       
[  5]   6.00-7.00   sec  11.4 MBytes  95.6 Mbits/sec    0    115 KBytes       
[  5]   7.00-8.00   sec  11.3 MBytes  94.6 Mbits/sec    0    137 KBytes       
[  5]   8.00-9.00   sec  11.4 MBytes  95.6 Mbits/sec    0    137 KBytes       
[  5]   9.00-10.00  sec  11.4 MBytes  95.6 Mbits/sec    0    137 KBytes

就可以测试网络性能了

pv

pv可以用来显示命令在执行时的进度条

安装

apt install -y pv

例如拷贝文件(把testfile1拷贝为testfile2),就可以用pv命令来代替:

root@thead-910:~# dd if=/dev/zero of=testfile1 bs=1M count=128
root@thead-910:~# pv testfile1 > testfile2
27.6KiB 0:00:00 [ 130MiB/s] [================================>] 100%

而且pv还能限制传输的速度,例如1KB/s

root@thead-910:~# pv -L 1k testfile1 > testfile2
  10KiB 0:00:10 [1011 B/s] [===========>                       ] 36% ETA 0:00:17

或者dd:

root@thead-910:~# pv < /dev/mmcblk0p3 | dd of=/tmp/testfile bs=4M
 662MiB 0:00:02 [ 198MiB/s] [====>                             ] 17% ETA 0:00:09

dieharder

dieharder 是一款用于测试随机数生成能力的测试工具

安装

apt install -y dieharder
root@thead-910:~# dieharder -a
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
        mt19937|  3.34e+07  | 273137300|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.08654260|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.76268865|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.09896061|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.79845879|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.90976807|  PASSED  
        diehard_opso|   0|   2097152|     100|0.90149754|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.60943983|  PASSED  
         diehard_dna|   0|   2097152|     100|0.28147819|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.87571086|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.32803443|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.43004782|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.91557461|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.10831747|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.58947448|  PASSED  
        diehard_sums|   0|       100|     100|0.03804515|  PASSED  
        diehard_runs|   0|    100000|     100|0.16852247|  PASSED  
        diehard_runs|   0|    100000|     100|0.16901521|  PASSED  
       diehard_craps|   0|    200000|     100|0.28860890|  PASSED  
       diehard_craps|   0|    200000|     100|0.41000082|  PASSED  

 marsaglia_tsang_gcd|   0|  10000000|     100|0.94040087|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.98666060|  PASSED  
         sts_monobit|   1|    100000|     100|0.99649756|   WEAK   
            sts_runs|   2|    100000|     100|0.06977154|  PASSED
... ...

results matching ""

    No results matching ""